;Parasykite programa, kuri iveda simboliu eilute ir atspausdina rastu skaitmenu skaiciu.
;pvz. ivedus abs 52d4 turi atspausdinti 3.

DSEG SEGMENT
	MAX    DB 255
	LEN    DB 0
	EILUTE DB 256 DUP (?)
	PAB    DB 13,10,'$'
	MSG1   DB 'Iveskite simboliu eilute:',10,13,'$'
	MSG2   DB 'Rastu skaitmenu skaicius eiluteje:',10,13,'$'
	DSEG ENDS

STSEG SEGMENT STACK
	DB 30 DUP (?)
	TOP    DB ?
STSEG ENDS

CODSEG SEGMENT
	ASSUME CS:CODSEG, DS:DSEG, SS:STSEG
  
BEGIN:
	JMP BEG
   
COUNT PROC
	LEA DI,EILUTE
	MOV BL,LEN
	MOV BH,0
   	ADD BX,DI
   	DEC BX 		;BX rodo i eilutes gala
   	MOV CL,48
   	MOV CH,48
  
CICL: 			
   	CMP DI,BX 		;pereiti jeigu DI>BX
  	JA PABAIGA
   	MOV DL,[DI]
   	CMP DL,48
   	JAE GALSKAICIUS
SEKANTIS:
   	INC DI
   	JMP CICL
GALSKAICIUS: CMP DL,57
   	JLE SAVESK
   	JMP SEKANTIS
SAVESK:
   	CMP CL,57
   	JE DES
   	ADD CL,1
   	JMP SEKANTIS
DES:
   	ADD CH,1
   	MOV CL,48
   	JMP SEKANTIS   
PABAIGA:
   	RET 			
COUNT ENDP

DISP PROC		;simboliu isvedimo i ekrana procedura
   	MOV DX,OFFSET PAB
   	MOV AH,09H
  	INT 21H
   	LEA DX,MSG2
   	INT 21H
   	MOV AH,02H
   	CMP CH,48
   	JE VIEN
  	MOV DL,CH
   	INT 21H
VIEN:
   	MOV DL,CL
   	INT 21H
   	RET
DISP ENDP

BEG:			;pagrindine programa
   	MOV AX,DSEG
   	MOV DS,AX
   	MOV AX,STSEG
   	MOV SS,AX
   	MOV SP,OFFSET SS:TOP
   	LEA DX,MSG1   	
   	MOV AH,9
   	INT 21H
   	MOV DX,OFFSET MAX
   	MOV AH,0AH
   	INT 21H
   	CMP LEN,0
   	JZ EXIT
   	CALL COUNT
   	CALL DISP
EXIT:
   	MOV AH,4CH
   	INT 21H
CODSEG ENDS
   END BEGIN   